/*
 * 
 */
package com.desanonymerUtilisateurs;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author Kevin
 */
public class ConnectDatabase {

    /**
     * classe qui va gérer la connexion à la base de données et vérifier si le password correspond 
     * bien à l'utilisateur saisi
     */
    static Connection con;
    
    public static void connectDatabase()
    {
        
        //On charge le pilote nécessaire à la connexion
        try 
        {
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch(ClassNotFoundException e)
        {
           e.printStackTrace();
           System.out.println("Impossible de charger le pilote");
        }
        
        try 
        {
           con = DriverManager.getConnection("jdbc:mysql://localhost/SimpleChat", "root", "");
           System.out.println("Connexion réussie !!!");
        }
        catch(SQLException e) 
        {
           e.printStackTrace();
           System.out.println("Connexion non effectuée !!!");
        }
    }
    
    public static ResultSet doRequest(String request)
    {
        ResultSet result = null;
        try 
        {
            Statement stmt = con.createStatement();
            result = stmt.executeQuery(request);
            System.out.println("Request done");
        } 
        catch (SQLException e) 
        {
            e.printStackTrace();
            System.out.println("Request not done");            
        }        
        return result;
    }
    
    public static void verifPassword(ResultSet result, String password) throws Exception
    {
        String passwordDB = "";
        
        try 
        {
            if (!result.next())
            {
                System.out.println("Utilisateur inconnu");
                throw new Exception("Username inconnu.");
            }
            else
            {
                //passwordDB = MessageDigest.getInstance("MD5").digest(result.getString("password"));
                passwordDB = result.getString("password");
                
                System.out.println(result);
                System.out.println("mot de passe correspondant user DB : " + passwordDB);
                System.out.println("mot de passe correspondant user saisi  : " + password);
                if (password.equals(passwordDB))
                {
                    System.out.println("password OK!");
                }
                else 
                {
                    throw new Exception("Mot de passe incorrect.");
                }
            }
        } 
        catch (SQLException e) 
        {
            e.printStackTrace();
        }
    }     
    
    public static void saveNewUser(String user, String password)
    {
        try 
        {
            Statement stmt = con.createStatement();
            stmt.executeUpdate("INSERT INTO user(userName, password) VALUES ('" + user + "','" + password + "')");
            System.out.println("Utilisateur enregistré");
            JOptionPane.showMessageDialog(null, "Utilisateur enregistré");
        } 
        catch (SQLException e) 
        {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "Ce nom d'utilisateur est déjà pris, veuillez en choisir un autre !");
        }
    } 
    
    public static void createSondage(String username,String question, boolean visibilite){
        try {
            PreparedStatement pst = con.prepareStatement("INSERT INTO sondage(question,visibilite_reponse,userName_sondeur) VALUES (?,?,?)");
            pst.setString(1, question);
            pst.setBoolean(2, visibilite);
            pst.setString(3,username);
            pst.execute();
        } catch (SQLException ex) {
            Logger.getLogger(ConnectDatabase.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
